// // mixins/auth-mixin.ts - 认证状态管理 mixin
// import { authManager } from '../api/auth-manager';

// /**
//  * 认证状态管理 mixin
//  * 为页面提供统一的登录状态管理和监听
//  */
// export const authMixin = {
//   data: {
//     isLoggedIn: false,
//     currentUser: null
//   },

//   // 页面生命周期
//   onLoad() {
//     // 初始化认证状态
//     this.initAuthState();
    
//     // 添加认证状态监听器
//     this.setupAuthListener();
//   },

//   onShow() {
//     // 每次显示时刷新认证状态
//     this.refreshAuthState();
//   },

//   onUnload() {
//     // 清理监听器
//     this.cleanupAuthListener();
//   },

//   // 认证相关方法
//   initAuthState() {
//     const isLoggedIn = authManager.isAuthenticated();
//     const currentUser = authManager.getCurrentUser();
    
//     this.setData({
//       isLoggedIn,
//       currentUser
//     });
//   },

//   refreshAuthState() {
//     const isLoggedIn = authManager.isAuthenticated();
//     const currentUser = authManager.getCurrentUser();
    
//     // 只有状态发生变化时才更新
//     if (this.data.isLoggedIn !== isLoggedIn) {
//       this.setData({
//         isLoggedIn,
//         currentUser
//       });
      
//       // 触发自定义的状态变化处理
//       if (typeof this.onAuthStateChange === 'function') {
//         this.onAuthStateChange(isLoggedIn, currentUser);
//       }
//     }
//   },

//   setupAuthListener() {
//     // 添加全局认证状态监听器
//     this.removeAuthListener = authManager.addAuthStateListener((isLoggedIn, user) => {
//       this.setData({
//         isLoggedIn,
//         currentUser: user
//       });
      
//       // 触发自定义的状态变化处理
//       if (typeof this.onAuthStateChange === 'function') {
//         this.onAuthStateChange(isLoggedIn, user);
//       }
//     });
//   },

//   cleanupAuthListener() {
//     if (this.removeAuthListener) {
//       this.removeAuthListener();
//       this.removeAuthListener = null;
//     }
//   },

//   // 便捷方法
//   requireAuth(callback?: () => void) {
//     if (this.data.isLoggedIn) {
//       callback && callback();
//       return true;
//     } else {
//       this.goToLogin();
//       return false;
//     }
//   },

//   goToLogin() {
//     wx.navigateTo({
//       url: '/pages/login/login'
//     }).catch(err => {
//       console.warn('跳转登录页失败:', err);
//     });
//   },

//   // 获取当前用户信息
//   getCurrentUser() {
//     return this.data.currentUser;
//   },

//   // 获取用户名
//   getUserName() {
//     const user = this.data.currentUser;
//     return user?.nickname || user?.username || '';
//   }
// };

// /**
//  * 应用 mixin 到页面的辅助函数
//  * @param pageOptions 页面配置对象
//  * @returns 增强后的页面配置对象
//  */
// export function withAuth(pageOptions: any) {
//   // 合并 mixin 的方法和数据
//   const mixinData = { ...authMixin.data, ...pageOptions.data };
//   const mixinMethods = { ...authMixin };
  
//   // 删除 data 属性，避免重复
//   delete mixinMethods.data;
  
//   // 处理生命周期方法的合并
//   const lifecycleMethods = ['onLoad', 'onShow', 'onUnload'];
  
//   lifecycleMethods.forEach(method => {
//     if (mixinMethods[method] && pageOptions[method]) {
//       // 如果页面和 mixin 都有同名方法，先执行 mixin 的，再执行页面的
//       const mixinMethod = mixinMethods[method];
//       const pageMethod = pageOptions[method];
      
//       mixinMethods[method] = function(...args: any[]) {
//         mixinMethod.call(this, ...args);
//         return pageMethod.call(this, ...args);
//       };
//     }
//   });
  
//   return {
//     ...mixinMethods,
//     ...pageOptions,
//     data: mixinData
//   };
// }
